// 音乐界面
// 引入数据库
const {
  mysqlFun
} = require('../mysql/mysql');
const request = require('request');
exports.lightMusic = function (app) {
  // 获取用户歌单
  app.post('/lightMusic', (req, res) => {
    const sql = `select * from userMusic where id=${req.body.id}`;

    function obj(data) {
      if (data === undefined) {
        return;
      }
      // 通过长度判断是否有返回数据
      if (data.length === 0) {
        // 没有默认音乐就返回没有
        res.json({
          code: 'M0001',
          msg: '用户没有默认音乐'
        })
        return;
      }
      // 用户创建过默认音乐就返回用户数据
      res.json({
        code: 'M0002',
        msg: '返回默认音乐',
        data: eval(data[0].musiclist).reverse()
      })
    }
    mysqlFun(sql, obj);
  })

  // 存储用户得到专属歌曲
  app.post('/AddMusic', (req, res) => {
    const sql = `select * from usermusic where id=${req.body.MusicId}`;

    function obj(data) {
      if (data === undefined) {
        return;
      }
      // 通过长度判断是否有返回数据
      // 有返回数据就写入函数
      // 没有返回数据就创建函数
      if (data.length === 0) {
        // 没有返回数据写入
        addId(req.body.MusicId, req.body.MusicList)
      } else {
        // 有返回数据创建
        UPdateId(data, req.body.MusicList)
      }
    }
    mysqlFun(sql, obj);
    // 写入函数
    function addId(id, list) {
      // 写入数组
      let arrList = [];
      arrList.push(list);
      const sql = `INSERT INTO usermusic(id,musiclist) value (${Number(id)},'${JSON.stringify(arrList)}')`;

      function obj(data) {
        if (data === undefined) {
          return;
        }
        if (data.length !== 0) {
          res.json({
            code: 'M0011',
            msg: '创建了一个新列表'
          })
        }
      }
      mysqlFun(sql, obj);
    }
    // 更新函数
    function UPdateId(data, list) {
      // 写入
      let dataList = JSON.parse(data[0].musiclist);
      // 先判断是否有这个歌曲， 有就不让重复添加
      for (let index = 0; index < dataList.length; index++) {
        const element = dataList[index];
        if (element.musicId === list.musicId) {
          res.json({
            code: 'M0031',
            msg: '重复添加'
          })
          return;
        }
      }
      // 数组中没有就写入数据库
      dataList.push(list);
      const sql = `UPDATE usermusic SET musiclist='${JSON.stringify(dataList)}' WHERE id=${data[0].id}`;
      //[{"musicId":1396727720,"musicUser":"寂寞沙洲冷（翻自 群星） ","musicAuthor":"留有声"}]
      function obj(data) {
        if (data === undefined) {
          return;
        }
        if (data.length !== 0) {
          res.json({
            code: 'M0021',
            msg: '写入一个对象'
          })
        }
      }
      mysqlFun(sql, obj);
    }
  })

  //获取搜索的音乐列表
  app.post("/GetSMusic", (req, res) => {
    let setImg = encodeURI(req.body.inputMusic);
    request(`https://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s=${setImg}&type=1&offset=0&total=true&limit=${req.body.numberMusic}`, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        body = JSON.parse(body);
        res.json({
          code: 'M0003',
          msg: '音乐返回成功',
          data: body
        })
        return;
      }
    })
  })

  // 获取歌词
  app.post("/GetMusicAlbum", (req, res) => {
    let MusicId = encodeURI(req.body.MusicId);
    request(`http://music.163.com/api/song/lyric?os=pc&id=${MusicId}&lv=-1&kv=-1&tv=-1`, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        res.json({
          code: 'M0003',
          msg: '音乐返回成功',
          data: JSON.parse(body)
        })
        return;
      }
    })
  })

  // 获取歌词
  app.post("/MusicClass", (req, res) => {
    function loop(cla) {
      let claUrl = encodeURI(cla);
      request(`https://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s=${claUrl}&type=1&offset=0&total=true&limit=40`, function (error, response, body) {
        if (!error && response.statusCode == 200) {
          let songs = JSON.parse(body).result.songs;
          let newSongs = []
          for (let index = 0; index < songs.length; index++) {
            const element = songs[index];
            let newObj = {};
            newObj.musicId = element.id;
            newObj.musicUser = element.name;
            newObj.musicAuthor = element.artists[0].name;
            newSongs.push(newObj)
          }
          res.json({
            code: 'M0099',
            msg: '音乐返回成功',
            data: newSongs
          })
          return;
        }
      })
    }

    // 根据前端传过来的数据判断该返回什么数据
    switch (req.body.cla) {
      case 'rege':
        loop('热歌')
        break;
      case 'xinge':
        loop('新歌')
        break;
      case 'jinqu':
        loop('华语')
        break;
      case 'paihang':
        loop('排行')
        break;
      case 'yuanchuang':
        loop('原创')
        break;
      case 'biansheng':
        loop('飙升')
        break;
      case 'huanjiu':
        loop('怀旧')
        break;
      case 'laoge':
        loop('老歌')
        break;
      case 'douyin':
        loop('抖音')
        break;
    }
  })

  // 获取音乐播放地址
  app.post("/gethttpMusci", (req, res) => {
    request(`https://api.vvhan.com/api/music?id=${req.body.id}&type=song&media=netease`, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        res.json({
          code: 'M0003',
          url: JSON.parse(body).mp3url,
          img: JSON.parse(body).cover
        })
        return;
      }
    })
  })
}